package br.com.sisat.service;

import java.io.Serializable;
import java.util.List;

import br.com.sisat.modelo.ConsultaDTO;
import br.com.sisat.modelo.HorarioAtendimentoDTO;
import br.com.sisat.modelo.PacienteDTO;
import br.com.sisat.modelo.PlanoDeSaudeDTO;
import br.com.sisat.persistencia.DAO.HorarioAtendimentoDAO;
import br.com.sisat.persistencia.DAO.MarcarConsultaDAO;
import br.com.sisat.util.ObjectUtil;
import br.com.sisat.util.UtilDatas;

public class MarcarConsultaService implements Serializable {

	private static final long serialVersionUID = 1L;

	private static MarcarConsultaService service;
	
	public static MarcarConsultaService getInstance(){
		if(ObjectUtil.isEmpty(service)){
			service = new MarcarConsultaService();
		}
		return service;
	}

	public String recuperarNomeTerapeuta(Long nuTerapeuta) {
		try {
			return MarcarConsultaDAO.getInstance().recuperarNomeTerapeuta(nuTerapeuta);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public String recuperarEspecialidade(Long nuEspecialidade) {
		try {
			return MarcarConsultaDAO.getInstance().recuperarNomeEspecialiade(nuEspecialidade);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void salvar(ConsultaDTO consultaDTO) {
		try {
			MarcarConsultaDAO.getInstance().salvar(consultaDTO);
		} catch (Exception e) {
			e.printStackTrace();
		}
		
	}

	public List<PacienteDTO> recuperarPacientes(String string) {
		try {
			return MarcarConsultaDAO.getInstance().recuperarPacientes(string);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return null;
	}

	public void remarcarConsulta(ConsultaDTO consultaDTO) {
		try {
			consultaDTO.setIdPessoa(MarcarConsultaDAO.getInstance().recuperarIdPessoa(consultaDTO));
			MarcarConsultaDAO.getInstance().remarcarConsulta(consultaDTO);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

	public List<PlanoDeSaudeDTO> consultarPlanosDeSaude() {
		try{
			return MarcarConsultaDAO.getInstance().consultarPlanosDeSaude();
		}catch(Exception e){
			e.printStackTrace();
		}
		return null;
	}

	
	public boolean validaNovaData(Long idTerapeuta, String novaData) {
		try{
			List<HorarioAtendimentoDTO> horarios = HorarioAtendimentoDAO.getInstance().recuperarLista(idTerapeuta);
			int diaSemana = UtilDatas.getDiaSemana(novaData);
			for (HorarioAtendimentoDTO horario : horarios) {
				if(diaSemana==horario.getDia()){
					return true;
				}
			}
			
		}catch(Exception e){
			e.printStackTrace();
		}
		
		return false;
	}

	
}
